跳到主要内容

配置NGINX请求分析看板

最后 更新

APO 充分利用 Vector + ClickHouse 实现的日志方案,做到了开箱即用、高效、低成本。该文档介绍如何使用 APO 的日志功能实现炫酷的 NGINX 请求分析看板。

效果图:

  • 请求与耗时分析总览

1 图

  • 异常请求分析

2 图

  • URI请求分析

3 图

  • 请求日志明细

4 图


配置步骤

第一步 修改NGINX日志格式

打开 NGINX 配置文件(一般在 /etc/nginx/nginx.conf 路径下),按照下面的示例修改 log_format 部分,该部分要完全一样:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '{"@timestamp":"$time_iso8601",'
'"client_ip":"$remote_addr",'
'"server_ip":"$server_addr",'
'"domain":"$server_name",'
'"request_method":"$request_method",'
'"path":"$uri",'
'"top_path":"$uri",'
'"query":"$args",'
'"request_length":$request_length,'
'"responsetime":$request_time,'
'"response_length":$body_bytes_sent,'
'"referer":"$http_referer",'
'"http_user_agent":"$http_user_agent",'
'"status":$status,'
'"upstreamhost":"$upstream_addr",'
'"upstreamtime":"$upstream_response_time"'
'}';
access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
}

修改完成后,重启 NGINX 或者执行命令 nginx -s reload 使配置生效。

第二步 采集NGINX日志

在安装 apo-one-agent 的 Kubernetes 集群中,编辑名为 apo-ilogtail-user-config 的 ConfigMap,添加采集 NGINX 日志的配置,注意修改其中 LogPath 为 NGINX 日志的路径,下面是示例:

data:
pod_stdout_all.yaml: |
...
pod_stdout_file.yaml: |
...
# 以下为新增配置内容
pod_log_file.yaml: |
enable: true
inputs:
- Type: file_log
LogPath: /var/log/nginx/
FilePattern: "*.log"
ContainerFile: true
processors:
- Type: processor_wait_for_signal
DisableSignalSampler: true
ContentsRename:
"__tag__:_container_id_": "_container_id_"
"__tag__:__path__": "_source_"
flushers:
- Type: flusher_http
RemoteURL: http://apo-vector-svc:4310

第三步 在 APO 平台上配置日志库

打开 APO 平台的全量日志页面,在“日志库”部分点击 +,添加新的日志库:

5 图

在弹出的配置页面中,按照以下步骤进行配置:

  1. “日志库名”填写nginx_access_log
  2. 在“匹配规则”中配置能够匹配到NGINX日志的规则,例如通过 _source_=/var/log/nginx/access.log 进行匹配
  3. “日志格式配置”中选择“结构化日志”,并在文本框中输入以下内容:
{
"@timestamp": "2024-12-06T06:44:17+00:00",
"client_ip": "10.244.0.46",
"client_region": "",
"client_city": "",
"client_latitude": 0.1,
"client_longitude": 0.1,
"server_ip": "10.244.167.148",
"domain": "localhost",
"request_method": "GET",
"path": "/grafana/api/live/ws",
"top_path": "/grafana/api/live/ws",
"query": "-",
"request_length": 1259,
"responsetime": 0.010,
"response_length": 10,
"referer": "-",
"http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"status": 403,
"upstreamhost": "10.96.2.121:80",
"upstreamtime": 0.009
}
  1. 最后点击“保存”。

第四步 打开NGINX看板并查看数据

打开 APO 平台的“中间件大盘”,在仪表板列表中点击“NGINX请求日志分析看板”:

6 图

在该看板的“项目”筛选框中选择 apo.logs_ninx_access_log(与配置日志库时的日志库名称保持一致):

8 图

到这里就完成了所有步骤,尽情享受炫酷的NGINX请求分析看板吧!